package com.zhangshanfeng.test;

import java.util.ArrayList;
import java.util.List;

/*
## Stream流

### 2.1体验Stream流【理解】

- 案例需求

  按照下面的要求完成集合的创建和遍历

  - 创建一个集合，存储多个字符串元素
  - 把集合中所有以"张"开头的元素存储到一个新的集合
  - 把"张"开头的集合中的长度为3的元素存储到一个新的集合
  - 遍历上一步得到的集合
 */
public class MyStream01 {
    public static void main(String[] args) {
        //普通操作
       /* ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("张无极");
        list.add("张飞飞");
        list.add("王五");
        ArrayList<String> list1 = new ArrayList<>();
        for (String s : list) {
            if(s.startsWith("张")){
                list1.add(s);
            }
        }

        ArrayList<String> list2 = new ArrayList<>();
        for (String s : list) {
            if(s.length() == 3){
                list2.add(s);
            }
        }
        System.out.println(list2);*/


       //使用Stream流操作
        //集合的批量添加
        ArrayList<String> list = new ArrayList<>(List.of("张三风","无极","张飞飞","张三"));

        //stream流
       /* Stream流的好处

                - 直接阅读代码的字面意思即可完美展示无关逻辑方式的语义：获取流、过滤姓张、过滤长度为3、逐一打印
                - Stream流把真正的函数式编程风格引入到Java中
                - 代码简洁
        */
       list.stream().filter(s->s.startsWith("张"))
               .filter(s->s.length() == 3)
               .forEach(s-> System.out.println(s));




    }
}
